package com.tangyee.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.tangyee.R;

import java.util.ArrayList;
import java.util.HashMap;

public class ListViewAdapter extends BaseAdapter {
    private LayoutInflater inflater;
    //得到一个LayoutInfalter对象用来导入布局
    private ArrayList<HashMap<String, Object>> listItem;
    private Context context;
    public ListViewAdapter(Context context, ArrayList<HashMap<String, Object>> listItem) {
        this.inflater =LayoutInflater.from(context);
        this.listItem = listItem;
        this.context=context;
    }
    @Override
    public int getCount() {
        return listItem.size();
    }//这个方法返回了在适配器中所代表的数据集合的条目数
    @Override
    public Object getItem(int position) {
        return listItem.get(position);
    }//这个方法返回了数据集合中与指定索引position对应的数据项
    @Override
    public long getItemId(int position) {
        return position;
    }//这个方法返回了在列表中与指定索引对应的行id
    //利用convertView+ViewHolder来重写getView()
    static class ViewHolder
    {
        public ImageView img;
        public TextView title;
        protected TextView summary;
    }//声明一个外部静态类
    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        final ViewHolder holder ;
        if(convertView == null)
        {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.layout_home_readlist, null);
            holder.img = (ImageView)convertView.findViewById(R.id.ImageViewItem);
            holder.title = (TextView)convertView.findViewById(R.id.ItemTitle);
            holder.summary=(TextView)convertView.findViewById(R.id.ItemSummary);
            convertView.setTag(holder);
        }
        else {
            holder = (ViewHolder)convertView.getTag();
        }
        //centerCrop
        /*
        CenterCrop()是一个裁剪技术，即缩放图像让它填充到 ImageView 界限内并且裁剪额外的部分。ImageView 可能会完全填充，但图像可能不会完整显示。
         */
        Glide.with(context).load((String) listItem.get(position).get("ItemImage")).override(580,400).centerCrop().into(holder.img);
        holder.title.setText((String) listItem.get(position).get("ItemTitle"));
        holder.summary.setText((String) listItem.get(position).get("ItemSummary"));
        return convertView;
    }//这个方法返回了指定索引对应的数据项的视图
}
